// 1. express
const express = require('express');
// 2. ejs
const ejs = require('ejs');

// 3. mongoose
const mongoose = require('mongoose');

// 3.1 连接数据库
mongoose.connect('mongodb://localhost/0907new');

// 3. 创建app
const app = express();

// 4. 配置模板引擎
app.set('views', __dirname + '/html');
app.engine('html', ejs.renderFile);

// 3.2 创建数据库连接监听
mongoose.connection.on('open', () => {
    console.log("连接成功");
    // 3.3 创建文档结构
    const newsSchema = new mongoose.Schema({
        newsTitle: String,
        newsContent: String,
        newsDate: Date
    });
    // 3.4 文档对象模型
    const newsModel = mongoose.model('news', newsSchema);
    // 5. 配置路由
    // 新闻列表页
    app.get('/newslist', (req, res) => {
        // 操作数据库

        newsModel.find((err, data) => {
            if (err) throw err;
            // console.log(data);
            res.render('newsList.html', { data })

        });
    })

    // 新闻详情页
    app.get('/newsDetail/:id', (req, res) => {

        // 通过id查找对应的数据
        // console.log(req.params);//{ id: 'H601AOK100038FO9' }
        // let result = data.find(item => item.id === req.params.id);
        // console.log(result);

        // 操作数据库

        newsModel.findById(req.params.id, (err, data) => {
            if (err) throw err;
            console.log("详情页:", data);
            res.render('newsDetail.html', { data })
        });
    });

    // 渲染表单页面路由
    app.get('/', (req, res) => {
        res.render('newsIndex.html');
    });

    app.use(express.urlencoded({ extended: false }));
    // 提交新闻的post请求
    app.post('/postNews', (req, res) => {
        // 接收请求体数据
        let { title, content } = req.body; // { title: 'aaa', content: 'bbb' }

        // 操作数据库
        newsModel.create({
            newsTitle: title,
            newsContent: content,
            newsDate: Date.now()
        }, (err, data) => {
            if (err) throw err;

            res.send('提交成功');
        })
    })
})

app.listen(80, () => {
    console.log("启动成功");
})
